function foo(){

}

const fooProxy = new Proxy(foo,{
    apply:function(target,thisAry,argArray){
        console.log("对foo函数进行了apply调用")
        target.apply(thisAry,argArray)
    },
    construct:function(target,argArray,newTarget){
        console.log("对foo函数进行了new调用")
        return new target(...argArray)
    }
})


fooProxy.apply({},["abc","cba"])
new fooProxy("abc","cba")

// Reflect的作用
// Reflect也是ES6新增的一个Api，它是一个对象，字面的意思是反射
// 既然Object可以做这些操作，为什么还需要Reflect这样新增对象？
// 没有考虑这种对对象本身的操作如何设计更加规范，所以把API放到Object上
// 但是Obejct作为一个构造函数，这些操作实际放到它身上不合适
// 还包含一些in，delect操作符，让js看起来奇怪
// 所以新增了Reflect，操作集中到Reflect对象上